Network Analysis HW 12 NTU GEOG M.S. YANG 臺大地理所碩一 楊宇翔 R09228001

題目: 利用本週提供的範例資料 csv files,進行以下的動態網絡分析: 1. 在Rmarkdown的html檔呈現動態網絡的animation。 2. 節點名稱為”Third artist in lat. 10525”的Forward path 與transmission tree。 3. 比較上述節點與節點”Hospitaller Master”的時序degree變化趨勢。 (用line chart呈現與比較)

library(networkDynamic)
library(tsna)
library(ndtv)
library(tergm)
library(statnet)
library(ggplot2)

# Step1
setwd("~/Desktop/Sample_DyNet")
library(networkDynamic)
library(tsna)
library(ndtv)
library(tergm)
library(statnet)
library(ggplot2)

# Step1
setwd("~/Desktop/Sample_DyNet")
data <- "Sample_VertexAttributes.csv"
MyVertexAttributes <- read.table(data,header = T,sep=",")


data <- "Sample_Edgelist.csv"
MyEdges <- read.table(data,header = T,sep=",")

thenetwork <- network(
  MyEdges,
  vertex.attr = MyVertexAttributes,
  vertex.attrnames = c("vertex_id","name,","region"),
  directed = FALSE,
  bipartite=FALSE
                       )


# Step2
data <- "Sample_DynamicEdges.csv"
MyDynamicEdges <- read.table(data,header = T,sep=",")
data <- "Sample_DynamicNodes.csv"
MyDynamicNodes<- read.table(data,header = T,sep=",")


MyDynamics <- networkDynamic(
  thenetwork,
  edge.spells = MyDynamicEdges,
  vertex.spells = MyDynamicNodes
)
## Edge activity in base.net was ignored
## Created net.obs.period to describe network
##  Network observation period info:
##   Number of observation spells: 1 
##   Maximal time range observed: 1257.5 until 1325 
##   Temporal mode: continuous 
##   Time unit: unknown 
##   Suggested time increment: NA

1. 在Rmarkdown的html檔呈現動態網絡的animation。

render.d3movie(MyDynamics, 
       displaylabels = T,
       bg="#ffffff", vertex.border="#333333",
       edge.col = 'black',
       render.par=list(tween.frames = 30, show.time = F),
       plot.par=list(mar=c(0,0,0,0)), output.mode='htmlWidget' )
## slice parameters:
##   start:1257.5
##   end:1325
##   interval:1
##   aggregate.dur:1
##   rule:latest

2. 節點名稱為”Third artist in lat. 10525”的Forward path 與 transmission tree

id <-MyVertexAttributes$vertex.id[which(MyVertexAttributes$name=="Third artist in lat. 10525")]
MyFwdPath <- tPath( MyDynamics,
v = id, # vertex_id 
direction = "fwd"
)


plot(MyFwdPath ,main="Forwar Reachable Set from Third artist in lat. 10525  ")

transmissionTimeline(MyFwdPath,jitter=TRUE,
                      main="Earliest forward path from Third artist in lat. 10525")

3. 比較上述節點與節點”Hospitaller Master”的時序degree變化趨勢。

MyDynamicNodes$onset<-1257
MyDynamicNodes$terminus <- 1325
MyDynamics_3 <- networkDynamic(
  thenetwork,
  edge.spells = MyDynamicEdges,
  vertex.spells = MyDynamicNodes
)
## Edge activity in base.net was ignored
## Created net.obs.period to describe network
##  Network observation period info:
##   Number of observation spells: 1 
##   Maximal time range observed: 1257 until 1325 
##   Temporal mode: continuous 
##   Time unit: unknown 
##   Suggested time increment: NA
degree_all<-tSnaStats(MyDynamics_3,"degree",aggregate.dur = 20)
Thir_inde<-which(MyVertexAttributes$name=="Third artist in lat. 10525")
Hos_index <- which(MyVertexAttributes$name=="Hospitaller Master")

degree_compare <- degree_all[,c(Thir_inde,Hos_index )]
colnames(degree_compare) <- c("Third artist in lat.10525","Hospitaller Master")
df<-as.data.frame(degree_compare)
df$time <- seq(1257,1325,1)
df_new <- df[,c(1,3)]
df_new2 <-df[,c(2,3)]
colnames(df_new)[1] <-"degree"
colnames(df_new2)[1]<-"degree"
df_new$group <-"Third artist in lat.10525"
df_new2$group <- "Hospitaller Master"
mydf<-rbind(df_new,df_new2)

ggplot(mydf,aes(x=time,y=degree,fill=group,colour=group))+geom_line()+ggtitle("Third artist in lat. 10525 and Hospitaller Master timely Degree Centrality value Comparison")